home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / util / cdity / ModeProSrc.lha / Prefs / MPP_DaemonPort.c < prev    next >
C/C++ Source or Header  |  1998-08-05  |  2KB  |  101 lines

  1. #include "mppexterns.h"
  2.  
  3. LONG SendDaemonMsg(ULONG Command, ULONG Code, APTR Data)
  4. {
  5.   LONG rv=0;
  6.   struct MPMessage *mpm;
  7.  
  8.   if(mpm=AllocVec(sizeof(struct MPMessage),MEMF_PUBLIC|MEMF_CLEAR))
  9.   {
  10.     mpm->Command=Command;
  11.     mpm->Code=Code;
  12.     mpm->Data=Data;
  13.     mpm->mp_Message.mn_Length=sizeof(struct MPMessage);
  14.     mpm->mp_Message.mn_ReplyPort=ReplyPort;
  15.  
  16.     //printf("Sending  %8x - Command %d Code %d Data %8x\n",mpm,mpm->Command,mpm->Code,mpm->Data);   
  17.     PutMsg(MPSem->DaemonPort,(struct Message *)mpm);
  18.     MsgsOut++;
  19.     rv=1;
  20.   }
  21.  
  22.   return(rv);
  23. }
  24.  
  25.  
  26. void ProcessPrefsMessages(void)
  27. {
  28.   ULONG listupd=FALSE;
  29.   struct MPMessage *mpm;
  30.  
  31. loopy:
  32.  
  33.   while(mpm=(struct MPMessage *)GetMsg(PrefsPort))
  34.   {
  35.     //printf("Recieved %8x - Command %d Code %d Data %8x\n",mpm,mpm->Command,mpm->Code,mpm->Data);   
  36.     switch(mpm->Command)
  37.     {
  38.       /*
  39.       case MP_FORCEDEDIT:
  40.         printf("MP_FORCEDEDIT\n");
  41.         AddTail(&ForcedEditList,(struct Node *)mpm);
  42.         if(ForcedEditMode==0)
  43.         {
  44.           ForcedEditMode=1;
  45.           RemakeGads();
  46.         }
  47.         mpm=0;
  48.         break;
  49.       */
  50.       case MP_SAVE:
  51.         ObtainSemaphore(&MPSem->NodeSem);
  52.         PrefSaveFile(EnvArcFile);
  53.         PrefSaveFile(EnvFile);
  54.         ReleaseSemaphore(&MPSem->NodeSem);
  55.         break;
  56.       case MP_QUIT:
  57.       case MP_PREFSCLOSE:
  58.         ClosePrefs=TRUE;
  59.         break;
  60.       case MP_PREFSTOFRONT:
  61.         ScreenToFront(Scr);
  62.         WindowToFront(Win);
  63.         ActivateWindow(Win);
  64.         break;
  65.       case MP_LISTSTATUS:
  66.         switch(mpm->Code)
  67.         {
  68.           case MPLS_UPDATING:
  69.             listupd=TRUE;
  70.             LG_SetGadgetAttrs(GadControl,GD_LIST,
  71.                          GTLV_Labels,~0,
  72.                          TAG_DONE);
  73.             
  74.             ReleaseSemaphore(&MPSem->ListSem);
  75.             break;
  76.           case MPLS_NORMAL:
  77.             listupd=FALSE;          
  78.             ObtainSemaphoreShared(&MPSem->ListSem);
  79.             LVActive=0;
  80.             UpdateGadgets();
  81.             break;
  82.         }
  83.         break;
  84.       case MP_REFRESH:
  85.         RefreshMenus();
  86.         break;
  87.       case MP_NEWNODE:
  88.         GD_Type(ListToCyc[mpm->Code]);  // change to the correct list
  89.         break;
  90.       
  91.     }
  92.     if(mpm)
  93.       ReplyMsg((struct Message *)mpm);
  94.   }
  95.   if(listupd)
  96.   {
  97.     WaitPort(PrefsPort);
  98.     goto loopy;
  99.   }
  100. }
  101.